// pages/register/register.ts
import { wechatRegisterUser, sendSmsCode } from '../../utils/http/httpUser';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    nickName: '',           // 用户名称
    phone: '',          // 手机号
    phoneCode: '',           // 验证码
    isPhoneValid: false, // 手机号是否有效
    isCounting: false,   // 是否正在倒计时
    countDown: 60       // 倒计时秒数
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {

  },


  /**
   * 检查手机号是否有效
   */
  checkPhone(e: any) {
    const phone = e.detail.value;
    // 简单的手机号验证：11位数字且以1开头
    const isValid = /^1\d{10}$/.test(phone);
    this.setData({
      isPhoneValid: isValid
    });
  },

  /**
   * 发送验证码
   */
  sendCode() {
    const { phone, isPhoneValid } = this.data;
    
    if (!isPhoneValid) {
      wx.showToast({
        title: '请输入有效的手机号',
        icon: 'none'
      });
      return;
    }
    
    // 显示确认对话框
    wx.showModal({
      title: '确认手机号码',
      content: `我们将发送验证码短信到：${phone}`,
      success: (res) => {
        if (res.confirm) {
          // 调用发送验证码的API
          sendSmsCode(phone).then((res: { msg: string; code: number }) => {
            if (res.code === 200) {
              // 发送成功，开始倒计时
              console.info('验证码已发送:' + phone);
              this.startCountDown();
              wx.showToast({
                title: '验证码已发送',
                icon: 'success'
              });
            } else {
              // 发送失败，显示错误原因
              wx.showToast({
                title: res.msg || '发送验证码失败',
                icon: 'none'
              });
            }
          }).catch((err: any) => {
            // 请求异常
            wx.showToast({
              title: '发送验证码失败，请稍后重试',
              icon: 'none'
            });
            console.error('发送验证码失败：', err);
          });
        }
      }
    });
  },

  /**
   * 开始倒计时
   */
  startCountDown() {
    this.setData({
      isCounting: true,
      countDown: 60
    });
    
    const timer = setInterval(() => {
      const { countDown } = this.data;
      if (countDown <= 1) {
        // 倒计时结束
        clearInterval(timer);
        this.setData({
          isCounting: false,
          countDown: 60
        });
      } else {
        // 倒计时继续
        this.setData({
          countDown: countDown - 1
        });
      }
    }, 1000);
  },

  /**
   * 提交注册表单
   */
  submitRegister() {
    const { nickName, phone, phoneCode, isPhoneValid } = this.data;
    
    // 表单验证
    if (!nickName) {
      wx.showToast({
        title: '请输入名称',
        icon: 'none'
      });
      return;
    }
    
    if (!isPhoneValid) {
      wx.showToast({
        title: '请输入有效的手机号',
        icon: 'none'
      });
      return;
    }
    
    if (!phoneCode || phoneCode.length < 4) {
      wx.showToast({
        title: '请输入有效的验证码',
        icon: 'none'
      });
      return;
    }
    
    // 提交注册信息
    console.log('提交注册信息：', { nickName, phone, phoneCode });
    
    // 调用注册API
    wx.login({
      success: (res) => {
        if (res.code) {
          // 调用创建用户接口
          wechatRegisterUser({
            avatar: '', // 如果有头像，可以在这里设置
            nickName: nickName,
            phone: phone,
            phoneCode: phoneCode,
            wechatCode: res.code
          }).then((result: {msg?: string, code?: number}) => {
            // 根据返回的code判断是否成功
            if (result.code === 200) {
              // 注册成功
              wx.showToast({
                title: '注册用户成功',
                icon: 'success'
              });
              
              // 返回上一页
              setTimeout(() => {
                wx.navigateBack();
              }, 1500);  
            } else {
              // 注册失败但有返回结果
              wx.showToast({
                title: result.msg || '注册失败',
                icon: 'none'
              });
            }
          }).catch((err: { msg?: string }) => {
            // 注册失败
            wx.showToast({
              title: err.msg || '注册失败',
              icon: 'none'
            });
          });
        } else {
          wx.showToast({
            title: '获取微信授权失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '微信登录失败',
          icon: 'none'
        });
      }
    });
  },
})
